#!/user/bin/env python3
# -*- coding: utf-8 -*-

from random import randint
from math import sqrt

"""
输出:水仙花数
水仙花数：三位数，每个位上的数字的立方和正好等于它本身
"""


def narcissus_num():
    for i in range(100, 1000):
        a = i // 100   # 百位
        c = i % 10  # 个位
        b = i // 10 % 10  # 十位
        if a**3 + b**3 + c**3 == i:
            print(i, end=" ")


#  narcissus_num()


"""
输入:一个正整数
输出:反转位数的正整数
"""


def revert():
    num = int(input("请输入一个正整数:"))
    reversed_num = 0
    while num > 0:
        reversed_num = reversed_num * 10 + num % 10
        num //= 10
    print(reversed_num)


# revert()

"""
输出:公鸡、母鸡、小鸡的数量
公鸡5元一只，母鸡3元一只，小鸡1元三只，用100块钱买一百只鸡，问公鸡、母鸡、小鸡各有多少只
"""


def rock_hen_chicken():
    for i in range(20):
        for j in range(33):
            k = 100 - i - j
            if 5*i + 3*j + k/3 == 100:
                print("共有公鸡%d只，母鸡%d只，小鸡%d只。" % (i, j, k))


# rock_hen_chicken()

"""
该游戏使用两粒骰子，玩家通过摇两粒骰子获得点数进行游戏。
简单的规则是：玩家第一次摇骰子如果摇出了7点或11点，玩家胜；
玩家第一次如果摇出2点、3点或12点，庄家胜；
其他点数玩家继续摇骰子，如果玩家摇出了7点，庄家胜；
如果玩家摇出了第一次摇的点数，玩家胜；
其他点数，玩家继续要骰子，直到分出胜负。


假定玩家有1000元，输完所有赌注即结束游戏。
"""


def craps():
    money = 1000
    while money > 0:
        needs_go_on = False

        while True:
            debet = int(input("请下赌注:"))
            if 0 < debet <= money:
                break
        first = randint(1, 6) + randint(1, 6)
        print("玩家摇出了%d点" % first)
        if first == 7 or first == 11:
            print("玩家胜！")
            money += debet
        elif first == 2 or first == 3 or first == 12:
            print("庄家胜！")
            money -= debet
        else:
            needs_go_on = True
        while needs_go_on:
            needs_go_on = False
            second = randint(1, 6) + randint(1, 6)
            print('玩家摇出了%d点' % second)
            if second == 7:
                print("庄家胜！")
                money -= debet
            elif second == first:
                money += debet
            else:
                needs_go_on = True
    print("您破产了，游戏结束！")


# craps()


"""
输出:斐波那契数列的前二十个数
"""


def fib(n):
    a, b = 0, 1
    for _ in range(n):
        a, b = b, a + b
        yield a


# for var in fib(20):
#     print(var, end=" ")

def fibonacci_20():
    a, b = 0, 1
    for i in range(20):
        a, b = b, a+b
        print(a, end=" ")


# fibonacci_20()

"""
输出:10000以内的完美数
完美数：所有真因子的和等于本身
"""


def perfect_num():
    for i in range(10000):
        res = 0
        for j in range(1, int(sqrt(i))+1):
            if i % j == 0:
                res += j
                if j > 1 and (i // j != j):
                    res += i // j
        if res == i:
            print(i, end=" ")


# perfect_num()

"""
输出:100以内所有的素数
"""


def prime_100():
    for i in range(1, 100):
        is_prime = True
        for j in range(2, int(sqrt(i) + 1)):
            if i % j == 0:
                is_prime = False
                break
        if is_prime:
            print(i, end=" ")


# prime_100()
